import { reqItemlist ,reqAddcartlist ,reqDeleteCartlist,reqChangeState} from "@/api";
import {Getuuid} from '../utils/uuidtoken'
export default {
    actions:{
        //向服务器请求商品详情数据
     async ItemList({commit},id){
       // 发送ajax请求获取商品详情数据
      //  console.log(id);
         let Itemlist = await reqItemlist(id)
        //  console.log(Itemlist);
         // 判断是否成功获取到数据
         if (Itemlist.code===200) {
           // 向mutations传递数据
           commit('ITEMLIST',Itemlist.data)
         }
     },
       //向服务器请求添加购物车商品数据
       async AddcartList({commit},{id,sum}){
        // 发送ajax添加购物车商品数据只返回一个成功或者失败的结果，不返回如何数据，所以不用mutations与state
        console.log(id,sum);
          let Addcartlist = await reqAddcartlist(id,sum)
          console.log(Addcartlist);
          // 判断是否请求成功，成功就返回成功的Promise对象，失败则相反
          if(Addcartlist.code==200){
            return Promise.resolve('OK')
          }
          else{
            return Promise.reject('ERROR')
          }
      },
       //向服务器请求删除购物车商品数据
       async DeleteCartlist({commit},id){
        // 发送ajax删除购物车商品数据只返回一个成功或者失败的结果，不返回如何数据，所以不用mutations与state
          let Deletecartlist = await reqDeleteCartlist(id)
          console.log(Deletecartlist);
          // 判断是否请求成功，成功就返回成功的Promise对象，失败则相反
          if(Deletecartlist.code==200){
            return Promise.resolve('OK')
          }
          else{
            return Promise.reject('ERROR')
          }
      },
      //向服务器请求切换商品选中状态
      async ChangeState({commit},{skuId,state}){
        // 发送ajax修改状态只返回一个成功或者失败的结果，不返回如何数据，所以不用mutations与state
          let Changestate = await reqChangeState(skuId,state)
          console.log(Changestate);
          // 判断是否请求成功，成功就返回成功的Promise对象，失败则相反
          if(Changestate.code==200){
            return Promise.resolve('OK')
          }
          else{
            return Promise.reject('ERROR')
          }
      },
     },
     mutations:{
       //把服务器拿到商品详情数据放在state管理
       ITEMLIST(state,data){
       // 把从服务器拿到的商品详情数据放在state管理
       state.itemlist=data
     },
     },
     state:{
        itemlist :{},
        uuidtoken:Getuuid()
     },
    //  计算属性--主要作用是简化仓库中的数据
    // 可以把我们将来在组件中需要的数据简化一下
    getters:{
      categoryView(state){
          return state.itemlist.categoryView || {}//要返回一个空数组以防万一网络差导致数据获取不及时而出错
      },
      skuInfo(state){
        return state.itemlist.skuInfo|| {}
    },
    spuSaleAttrList(state){
      return state.itemlist.spuSaleAttrList|| {}
  }
     }
}